/**
 * Importação das bibliotecas necessárias para a implementação da classe.
 */
import java.io.*;
import java.net.MalformedURLException;
import java.net.URL;
import java.net.URLConnection;
import javax.swing.*;
import java.util.Date;
import java.text.DateFormat;
import java.text.SimpleDateFormat;
import java.util.Locale;
import java.util.ResourceBundle;

/**
 * 
 * Universidade de Brasília - Gama
 * Sistema de Análise de Investimentos de Bolsa de Valores - Projeto de Técnicas de Programação
 * @author Filipe Barbosa de Almeida - 09/0006097
 * @author Gabriela Matias Navarro - 09/0006526
 * @author Renato Guibson Girardi - 09/0013204
 */
public class Atualizacao extends Thread {
    
    /**
     * Declaraçao dos Atributos da Classe Atualização
     */
    private String acao;
    private static ResourceBundle myResources;
    private static String LinguaAtual = "Português";
    private static String resultado;
    private static String vetor[];
    private static String valor[];
    private static int tamanho1;
    private static int tamanho2;
    private static int tamanho3;

    /**
     * Método que escolhe o idioma qual idioma estará a classe atualização.
     * @param acao
     * @param lingua 
     */
    public Atualizacao(String acao,String lingua){
        this.acao = acao;
        LinguaAtual = lingua;
        if (LinguaAtual.equals("Português")) {
           myResources =  ResourceBundle.getBundle("Message",Locale.getDefault());
        }
        else {
           myResources =  ResourceBundle.getBundle("Message_en_US",Locale.ENGLISH);
        }
    }
	 
	 /** Metodo para atualização dos dados do Ativo
	  * 
	  * @param String acao -  Recebe o nome do Ativo
	  */
	// public static void run(String acao) {
                 
    @Override
public void run(){
    while(true) 

    try {

      if(Thread.interrupted() == true){
            break;
        }

            /**
            * Atributos para Manipulação da Data
            */ 
            Date agora = new Date();
            DateFormat data = DateFormat.getDateInstance(DateFormat.FULL);	
            SimpleDateFormat yyyyMMdd = new SimpleDateFormat("yyyy-MM-dd"); 
            SimpleDateFormat MMddyyyy = new SimpleDateFormat("MM/dd/yyyy");
            String dataFinal;
            dataFinal = yyyyMMdd.format(agora);

                /**
                 * Atributos da Gravação em Arquivo.
                 */
                File arquivo; 
                arquivo = new File("teste.txt");
                FileOutputStream fos = new FileOutputStream(arquivo, true);

                URL url = new URL("http://download.finance.yahoo.com/d/quotes.csv?s=" + acao + "&f=sl1d1t1c1ohgv&e=.csv");
                // Exemplo: "http://download.finance.yahoo.com/d/quotes.csv?s=MMXM3.SA&f=sl1d1t1c1ohgv&e=.csv"
                URLConnection yahooConnection = url.openConnection();

                BufferedReader dado;
                dado = new BufferedReader(new InputStreamReader(yahooConnection.getInputStream()));
                String inputLine;

                while ((inputLine = dado.readLine()) != null) {
                 // String resultado;
                resultado=inputLine;

                fos.write(resultado.getBytes());

                vetor = resultado.split(",");
                this.tamanho1 = vetor[0].length();
                this.tamanho2 = vetor[2].length();
                this.tamanho3 = vetor[3].length();
                
                
                }

                         /**
                         * Inserção dos atributos da ação no banco de dados.
                         */
                      if(acao.equals("PETR4.SA")){

                        try{
                            Transacao.abrir();
                            String sql = "INSERT INTO petr4 (nome, maxima, minima,tempo, valorAtual,variacao ) "
                                                        + "VALUES ( "
                                                        + "'"
                                                        +vetor[0].substring(1,tamanho1 - 1)
                                                        + "', "
                                                        + "'"
                                                        + vetor[6]
                                                        + "', "
                                                        + "'"
                                                        + vetor[7]
                                                        + "', "
                                                        + "'"
                                                        + dataFinal
                                                        + "', "
                                                        + "'"
                                                        + vetor[1]
                                                        + "', "
                                                        + "'"
                                                        + vetor[4]
                                                        + "') ";

                                        System.out.println(sql);
                                        Transacao.executar(sql);
                                        Transacao.commit();
                        /**
                        * Validação de Atributos 
                        */
                        }catch (ValorInvalidoException e) {
                                JOptionPane.showMessageDialog(null,"O seguinte erro ocorreu durante a criação da pessoa: ERRO NO VALOR INICIAL");
                        } catch (Exception e) {
                                JOptionPane.showMessageDialog(null,myResources.getString("mensagem.erros.try")+ e.getMessage());
                        }

                    }
                      else{ 
                          if(acao.equals("MMXM3.SA")){


                                try{
                                    Transacao.abrir();
                                    String sql = "INSERT INTO mmxm3 (nome, maxima, minima,tempo, valorAtual,variacao ) "
                                                                + "VALUES ( "
                                                                + "'"
                                                                +vetor[0].substring(1,tamanho1 - 1)
                                                                + "', "
                                                                + "'"
                                                                + vetor[6]
                                                                + "', "
                                                                + "'"
                                                                + vetor[7]
                                                                + "', "
                                                                + "'"
                                                                + dataFinal
                                                                + "', "
                                                                + "'"
                                                                + vetor[1]
                                                                + "', "
                                                                + "'"
                                                                + vetor[4]
                                                                + "') ";

                                                System.out.println(sql);
                                                Transacao.executar(sql);
                                                Transacao.commit();
                                /**
                                * Validação de Atributos 
                                */
                                }catch (ValorInvalidoException e) {
                                        JOptionPane.showMessageDialog(null,"O seguinte erro ocorreu durante a criação da pessoa: ERRO NO VALOR INICIAL");
                                } catch (Exception e) {
                                        JOptionPane.showMessageDialog(null,myResources.getString("mensagem.erros.try")+ e.getMessage());
                                }



                              //  System.out.println("Ainda não foi implementada pra essa acao.");        
                    }
                          else { 
                              if(acao.equals("BBAS12.SA")){

                                    try{
                                        Transacao.abrir();
                                        String sql = "INSERT INTO bbas12 (nome, maxima, minima,tempo, valorAtual,variacao ) "
                                                                    + "VALUES ( "
                                                                    + "'"
                                                                    +vetor[0].substring(1,tamanho1 - 1)
                                                                    + "', "
                                                                    + "'"
                                                                    + vetor[6]
                                                                    + "', "
                                                                    + "'"
                                                                    + vetor[7]
                                                                    + "', "
                                                                    + "'"
                                                                    + dataFinal
                                                                    + "', "
                                                                    + "'"
                                                                    + vetor[1]
                                                                    + "', "
                                                                    + "'"
                                                                    + vetor[4]
                                                                    + "') ";

                                                    System.out.println(sql);
                                                    Transacao.executar(sql);
                                                    Transacao.commit();
                                    /**
                                    * Validação de Atributos 
                                    */
                                    }catch (ValorInvalidoException e) {
                                            JOptionPane.showMessageDialog(null,"O seguinte erro ocorreu durante a criação da pessoa: ERRO NO VALOR INICIAL");
                                    } catch (Exception e) {
                                            JOptionPane.showMessageDialog(null,myResources.getString("mensagem.erros.try")+ e.getMessage());
                                    }

                            }
                              else{ 
                                  if(acao.equals("BBAS3.SA")){

                                        try{
                                            Transacao.abrir();
                                            String sql = "INSERT INTO bbas3 (nome, maxima, minima,tempo, valorAtual,variacao ) "
                                                                        + "VALUES ( "
                                                                        + "'"
                                                                        +vetor[0].substring(1,tamanho1 - 1)
                                                                        + "', "
                                                                        + "'"
                                                                        + vetor[6]
                                                                        + "', "
                                                                        + "'"
                                                                        + vetor[7]
                                                                        + "', "
                                                                        + "'"
                                                                        + dataFinal
                                                                        + "', "
                                                                        + "'"
                                                                        + vetor[1]
                                                                        + "', "
                                                                        + "'"
                                                                        + vetor[4]
                                                                        + "') ";

                                                        System.out.println(sql);
                                                        Transacao.executar(sql);
                                                        Transacao.commit();
                                        /**
                                        * Validação de Atributos 
                                        */
                                        }catch (ValorInvalidoException e) {
                                                JOptionPane.showMessageDialog(null,"O seguinte erro ocorreu durante a criação da pessoa: ERRO NO VALOR INICIAL");
                                        } catch (Exception e) {
                                                JOptionPane.showMessageDialog(null,myResources.getString("mensagem.erros.try")+ e.getMessage());
                                        }
                            }
                        }
                    }
                }
                dado.close();
                sleep(10000);
                fos.close();



	        } catch (InterruptedException erro) {
                    
	            System.out.println("InterruptedException: " + erro);
                    break;
	            
	        } catch (ArrayIndexOutOfBoundsException Exception ){
	        	System.out.println("Nenhum argumento foi digitado");
	        	
	        } catch (MalformedURLException me) {
	            System.out.println("MalformedURLException: " + me);
	            
	        } catch (IOException ioe) {
	            System.out.println("IOException: " + ioe);
	        }
    }
}
	        
           



/**
 * Fim da Classe atualização
 */
